/*
编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀，返回空字符串 ""。

 

示例 1：
两两匹配。匹配完成用匹配后的结果和第三个串匹配，得到最后的结果
先找到一组数组中，length 最短的字符串，然后从最后一位，不断减少和其他两个字符串匹配，只要有一个字符串没匹配对，就继续减少，这思路相对而言简单些
输入：strs = ["flower","flow","flight"]
输出："fl"
示例 2：

输入：strs = ["dog","racecar","car"]
输出：""
解释：输入不存在公共前缀。

*/

/**
 * 你的思路是什么
 * 我帮你一起想一下 
 * 循环啊
 * @param {string[]} strs
 * @return {string}
 */
var longestCommonPrefix = function (strs) {

    let tempObj = {}
    for (let i = 0; i < strs[0].length; i++) {
        const element = strs[0].slice(0, i + 1);

        for (let j = 1; j < strs.length; j++) {
            if (element == strs[j].slice(0, element.length)) {
                tempObj[element] = (tempObj[element] || 1) + 1
            }
        }
    }
    //这里用了嵌套的for循环指数 n^2+n
    let tempArray = []
    for (const key in tempObj) {
        if (tempObj[key] == strs.length) {
            tempArray.push(key)
        }
    }
    tempArray = tempArray.sort((a, b) => b.length - a.length ? -1 : 1)
    if (tempArray.length > 0) {
        return tempArray[0]
    }
    return "空~"

};
//可以是可以，就是花的时间久
// 怎么衡量执行的时间
//勉强满足了
console.log(longestCommonPrefix(["flaower", "aflaow", "flaight"]))
console.log(longestCommonPrefix(["dog","racecar","car"]))
console.log(longestCommonPrefix(["abca","abc","abd","abf"]))